package com.itxx.reflection;

import com.itxx.reflection.damain.Student;

public class ReflectionDemo1{
    public static void main(String[] args) throws ClassNotFoundException {
        /*
    反射是框架的灵魂
            是在运行状态下,对于任意一个类,都能够知道这个类的所有属性和方法;
            对于任意一个对象,都能调用它的任意属性和方法
            这种动态获取信息以及动态调用对对象方法的功能

            利用反射调用类中的属性和方法时,无视修饰符
            先获取配置文件中的信息 并创建对象和属性
     好处
            可以根据参数灵活的创建对象
            无视修饰符
        */
        /*获取class对象
                1. 源代码阶段   Class类中 forName(String className)全类名

                2. Class对象阶段  类名.Class

                3. RunTime阶段  利用对象的getCalss方法来获取Class对象
                //getclass()是定义在Object中的

        */
       //1. 源代码阶段   Class类中 forName(String className)全类名

        Class className = Class.forName("com.itxx.reflection.damain.Student");
        System.out.println(className);
        // 2. Class对象阶段  类名.Class

        Class<Student> studentClass = Student.class;
        System.out.println(studentClass);

        // 3. RunTime阶段  利用对象的getCalss方法来获取Class对象
        // getclass()是定义在Object中的

        Student student = new Student();
        Class<? extends Student> aClass = student.getClass();
        System.out.println(aClass);
        

    }

}
